//writing to a file
/*在文件输出的主要步骤如下:
 * 1.包含头文件fstream;
 * 2.创建一个ofstream对象;
 * 3.将该ofstream对象同一个文件关联起来;
 * 4.就像使用cout那样使用ofstream对象.
 *
 * 文件输入:
 * 必须包含头文件iostream;
 * 头文件定义了一个用处理输入的istream类;
 * 头文件声明了一个名为cin的istream变量(对象);
 * 必须指明名称空间std;
 * 可以结合使用cin和运算符>>来读取各种类型的数据;
 * 可以使用cin和get()方法来读取一个字符,使用cin和getline()来读取一行字符;
 * 可以结合使用cin和eof(),file()方法来判断输入是否成功;
 * 对象cin本身被用于测试条件时,如果最后一个读取操作成功,它将被转换为布尔值true,否则被转化为false;
 *
 *
 * 文件输出:
 * 必须包含头文件fstream;
 * 头文件fstream定义了一个用于处理输入的ifstream类;
 * 需要声明一个或者多个ifstream变量(对象),并已自己喜欢的方式对其进行命名,条件时遵守常用的命名规则;
 * 必须指明名称空间std;
 * 需要将ifstream对象与文件关联起来.为此,方法之一是使用open()方法;
 * 使用完文件后,应使用close()方法来将其关闭;
 * 可结合使用ifstream对象和运算符>>来读取各种类型的数据;
 * 可以使用ifstream对象和get()方法来读取一个字符,使用ifstream对象和getline()来读取一行字符;
 * 可以结合使用ifstream和eof(),file()等方法来判断输入是否成功;
 * ifstream随想本身被用作测试条件时,如果对吼一个读取操作成功,它江北转换为布尔值true,否则将被转化为false;
*/
#include<iostream>
#include<fstream>           //for file I/O

int main()
{
    using namespace std;

    char automobile[50];
    int year;
    double a_price;
    double d_price;

    ofstream outFile;
    outFile.open("carinfo.txt");

    cout << "Enter the make and model of automobile: ";
    cin.getline(automobile,50);
    cout << "Enter the model year: ";
    cin >>year;
    cout << " Enter the original asking price: ";
    cin >> a_price;
    d_price = 0.913 * a_price;

    //display information on screen with cout

    cout <<fixed;
    cout.precision(2);
    cout.setf(ios_base::showpoint);
    cout << "Make and model : " << automobile << endl;
    cout << "Year: "<< year <<endl;
    cout << "Was asking $ "<< a_price<<endl;
    cout << "Now asking $ " << d_price << endl;

    //now do exact same things using outFile instead of cout
    outFile<<fixed;
    outFile.precision(2);
    outFile.setf(ios_base::showpoint);
    outFile << "Make and model : " << automobile << endl;
    outFile<<"Year: "<< year <<endl;
    outFile << "Was asking $" <<a_price<<endl;
    outFile << "Now asking $" <<d_price << endl;

    outFile.close();
    return 0;

}
